home *** CD-ROM | disk | FTP | other *** search
/ Light ROM 1 / LIGHT-ROM 1 (Amiga Library Services)(1994).iso / ffdisks / d917.lha / AUSH / AUSH.doc < prev    next >
Text File  |  1993-10-04  |  50KB  |  1,066 lines

  1.  
  2.  
  3.                AUSH - Manuel de référence
  4.  
  5.  
  6.  
  7.  
  8.  
  9. AboutThisDoc
  10.  
  11.       Ce manuel décrit la version 3.15 de l'utilitaire AUSH. Ce  programme
  12.   est (c)1992-1993 par Denis GOUNELLE, toute utilisation commerciale ou  vente
  13.   sans autorisation écrite est strictement interdite. Vous  pouvez  copier  et
  14.   diffuser ce programme aux conditions suivantes :
  15.  
  16.     - l'ensemble des fichiers doit être fourni
  17.     - aucun fichier ne doit avoir été modifié
  18.     - vous ne devez pas demander plus de 40FF pour cela
  19.  
  20.       Malgré de nombreux tests, je ne peux garantir que AUSH  ne  contient
  21.   aucune erreur. VOUS UTILISEZ CE PROGRAMME A VOS RISQUES  ET  PERILS.    Je  ne
  22.   pourrai en aucun cas être tenu pour responsable de tout dommage,  direct  ou
  23.   indirect, résultant de l'utilisation de AUSH.
  24.  
  25. Introduction
  26.  
  27.       AUSH (Amiga Ultimate SHell) est  un  interpréteur  de  commande  (ou
  28.   "shell") écrit pour l'Amiga, et destiné à remplacer entièrement le shell  de
  29.   Commodore. Il s'inspire de tous les shells que j'ai utilisé jusqu'ici, aussi
  30.   bien sous UNIX (sh, csh, et surtout tcsh 6.00.03) que sur Amiga (AShell  1.3
  31.   et Csh 4.01A), tout en intégrant de  nombreuses  idées  personnelles    et  en
  32.   gardant la plus grande compatibilité possible avec le shell de Commodore.
  33.  
  34.       Vos critiques et suggestions sur ce programme  seront  toujours  les
  35.   bienvenues. N'hésitez pas à m'écrire, à l'adresse suivante :
  36.  
  37.                    M. GOUNELLE Denis
  38.                     Boite 71
  39.                   6, rue des cailloux
  40.                  92110 CLICHY - FRANCE
  41.  
  42.       Vous pouvez également m'adresser un  message  à  l'adresse  Internet
  43.   "gounelle@alphanet.ch". Notez qu'il s'agit d'une boite à lettre  mise  à  ma
  44.   disposition par un ami, aussi veuillez n'envoyer que de courts messages.  De
  45.   plus, n'ayant pas accès directement à mes messages, n'espérez pas avoir  une
  46.   réponse avant une dizaine de jours.
  47.  
  48.       Merci à Pierre ARDICHVILI, Jean-Yves PROUX, Jean-Philippe  RAPP,  et
  49.   Michel SCHINZ pour leurs tests et leurs suggestions.
  50.       En France, la dernière version de ce programme est disponible auprès
  51.   de Serge HAMMOUCHE, 3 rue Anatole France,  13220  Chateauneuf-les-Martigues.
  52.   Pour recevoir le catalogue complet, il vous suffit d'envoyer deux timbres  à
  53.   cette adresse.
  54.  
  55. Installation
  56.  
  57.       Cette version de AUSH  ne  fonctionne  que  sous  système  2.04  (ou
  58.   supérieur). Copiez les fichiers "AUSH"  (le  shell  lui-même)  et  "NewAUSH"
  59.   (commande pour lancer un nouveau shell) dans le répertoire "C:".  Notez  que
  60.   AUSH et NewAUSH sont écrits en code ré-entrant, et peuvent donc parfaitement
  61.   être rendus résidents.
  62.       AUSH est désormais localisé, c'est-à-dire qu'il peut s'adapter à  la
  63.   langue par défaut si vous avez le système 2.1 ou plus. Il vous faudra  alors
  64.   copier le fichier catalogue désiré dans le répertoire correspondant à  votre
  65.   langue par défaut. Par exemple, s'il s'agit du français, copiez  le  fichier
  66.   "français.catalog" dans le répertoire  "SYS:Locale/Catalogs/Français",  sous
  67.   le nom "AUSH.catalog"
  68.  
  69. La commande NewAUSH
  70.  
  71.       Cette commande est l'équivalent des commandes "NewCLI" et "NewShell"
  72.   du shell de Commodore. Elle ne fonctionnera que si le  programme  "AUSH"  se
  73.   trouve dans le chemin d'accès défini par la commande "Path". Pour lancer  un
  74.   nouveau shell, depuis la ligne de commande, tapez :
  75.  
  76.       NewAUSH [WINDOW <spécification de fenêtre>] [FROM <fichier>]
  77.  
  78.       Pour lancer un nouveau shell depuis le WorkBench, créez une icône de
  79.   type "Project". Indiquez éventuellement une taille de pile (champ  "STACK"),
  80.   une  spécification  de  fenêtre  (champ   "TOOL   TYPE",   sous   la   forme
  81.   "WINDOW=spécification"), et un nom de  fichier  de  démarrage  (champ  "TOOL
  82.   TYPE", sous la forme "FROM=fichier"). N'oubliez  pas  de  mettre  le  chemin
  83.   d'accès à NewAUSH dans le champ "DEFAULT TOOL".
  84.  
  85. Notions de base
  86.  
  87.       Lorsque vous    lancez    AUSH,  un  message  indiquant  la  version  du
  88.   programme apparait, suivit d'une chaine d'invite (ou "prompt"). Par  défaut,
  89.   cette chaine indique le numéro du shell, suivit du  répertoire  courant.  Le
  90.   shell attend alors vos commandes.
  91.  
  92.       Une commande simple  est  une  suite    de  mots  séparés  par    un  ou
  93.   plusieurs espaces. Le premier mot indique la commande  à  exécuter,  et  les
  94.   autres sont les arguments à passer à cette commande.
  95.       Si  le  premier  mot    correspond  à  un   alias,   la   substitution
  96.   correspondante est effectuée. Cela continue tant que c'est possible, ce  qui
  97.   veut dire qu'un alias  peut  être  défini  en  fonction  d'un  autre.  Notez
  98.   cependant qu'il n'y a pas de contrôle de récursivité des  définitions.  Vous
  99.   pouvez désactiver la substitution des alias en  ajoutant  le    caractère  "\"
  100.   devant le nom de la commande (par exemple "\ls df0:")
  101.       AUSH examine également les arguments, et remplace  certains  d'entre
  102.   eux en fonction des règles suivantes :
  103.  
  104.       ;       tout ce qui suit est un commentaire, et est ignoré.
  105.       ^car      remplacé par "CTRL-car" si "car"  est  une  lettre,  par
  106.           "car" sinon.
  107.       §n      remplacé par le  n-ième  répertoire  dans  la  pile  des
  108.           répertoires.
  109.       $var      remplacé par la valeur de la    variable  "var"  (cherchée
  110.           d'abord  dans  les  variables  locales,  puis  dans  les
  111.           variables  globales,    et  enfin   dans   les     variables
  112.           d'environnement de Commodore) ou par une chaine vide  si
  113.           cette variable n'est pas définie.
  114.           Le nom de la variable peut être indiqué entre  accolades
  115.           afin de le séparer de la suite  :  si  vous  voulez  par
  116.           exemple afficher le contenu de la variable "var"  suivit
  117.           du  mot  "coucou",   il   vous   faudra   écrire   "echo
  118.           ${var}coucou" et non "echo $varcoucou".
  119.           Le nom de la variable peut  éventuellement  être  suivit
  120.           d'un nom de fonction. Cette fonction sera  appliquée  au
  121.           contenu de la variable (si la variable est définie) lors
  122.           de la substitution. Notez que  le  contenu  réel  de    la
  123.           variable ne sera pas modifié. Les fonctions  disponibles
  124.           sont :
  125.  
  126.           lower   converti en minuscules
  127.           upper   converti en majuscules
  128.           first   extrait le premier caractère
  129.           slead   supprime espaces et tabulations en tête
  130.           len      calcule la longueur
  131.           base      supprime le chemin d'accès
  132.           noext   supprime l'extension
  133.           expand  étend le motif
  134.           split   découpe la variable en plusieurs sous-chaines
  135.               (voir commande "for")
  136.  
  137.           La syntaxe à respecter est la forme "var:fonction",  par
  138.           exemple "$config:lower" ou "${config:lower}".
  139.       motif      remplacé par le nom de tous les fichiers  correspondant.
  140.           Un  motif   est   un     mot   contenant   au    moins    un
  141.           méta-caractères  AmigaDOS.  Notez  que  la  plupart  des
  142.           commandes (list,  copy,  ...)  étendent  elles-même  les
  143.           motifs, et que dans ce cas  il  vous    faudra    mettre    le
  144.           motif entre quotes  (par  exemple  "list  '#?.o'")  pour
  145.           éviter des conflits.
  146.       {expr}      remplacé par la valeur de l'expression (voir la  syntaxe
  147.           plus loin).
  148.       !!      remplacé par la dernière commande dans l'historique.
  149.       !n      remplacé par la commande numéro "n" dans l'historique.
  150.       !chaine      remplacé par la dernière commande commençant par
  151.           "chaine" dans l'historique.
  152.       `cmd`       remplacé par la première ligne produite en sortie par la
  153.           commande indiquée. Les espaces  en  tête  sont  éliminés
  154.           avant remplacement, la ligne est considéré comme un seul
  155.           argument et n'est pas ré-interprété.
  156.           Exemple : la commande "set toto `type config`" copie  le
  157.           contenu de la première ligne du fichier "config" dans la
  158.           variable locale "toto".
  159.       \car      copie le caractère indiqué sans l'interpréter.
  160.       'chaine'    copie la chaine sans interprétation (à part de la  forme
  161.           "\car").
  162.       "chaine"    copie la chaine sans interprétation, à part  des  formes
  163.           "^car", "§n",  "$var",  "{expr}"  et  "\car".  De  plus,
  164.           l'extension des motifs n'est pas désactivée.
  165.  
  166.       AUSH est également capable de rediriger l'entrée ou la sortie  d'une
  167.   commande : au lieu de se faire sur la fenêtre courante, elle se fera sur  le
  168.   fichier indiqué. La syntaxe à respecter est la suivante :
  169.  
  170.       >nom      redirection de la  sortie  vers  le  fichier    "nom".  Le
  171.           fichier est écrasé s'il existe déjà, créé sinon.
  172.       >>nom      redirection de la  sortie  vers  le  fichier    "nom".  La
  173.           sortie est ajoutée à la  fin    du  fichier  s'il  existe,
  174.           sinon le fichier est créé.
  175.       <nom      redirection de l'entrée depuis le fichier "nom".
  176.  
  177.       La spécification de ces redirections peut se faire n'importe où  sur
  178.   la ligne de commande. Il peut y avoir un  ou    plusieurs  espaces  entre  les
  179.   caractères  de  redirection  et  le  nom  de    fichier  (comme  par   exemple
  180.   "list > maliste").
  181.  
  182.       Une commande complexe est composée d'au moins deux commandes simples
  183.   enchainées par une des formes suivantes :
  184.  
  185.       cmd1|cmd2|...   exécution  successive  de  commandes  simples,  avec
  186.               "pipes" (la  sortie  de  la  commande  à  gauche  du
  187.               caractère "|"  est  utilisée  comme  entrée  par  la
  188.               commande indiquée à droite), tant que le code retour
  189.               est nul.
  190.       cmd1,cmd2,...   exécution successive de commandes, tant que le  code
  191.               retour est nul. Vous pouvez spécifier des  commandes
  192.               simples, mais aussi des enchainements par pipes (par
  193.               exemple "cd ram: , list | wc , delete toto").
  194.  
  195.       Le code retour d'une commande complexe  est  celui  de  la  dernière
  196.   commande simple exécutée. Seule la dernière commande simple  d'une  commande
  197.   complexe peut être lancée en arrière plan.
  198.  
  199.       Une fois l'analyse de la ligne  de  commande  terminée,  AUSH  lance
  200.   l'exécution de la commande correspondante. La recherche se fait d'abord dans
  201.   la liste des commandes internes au shell, puis dans la liste    des  commandes
  202.   résidentes, et enfin dans les répertoires  indiqués  à  l'aide  la  commande
  203.   "Path". Une fois la commande lancée, AUSH attend la fin  de  son  exécution,
  204.   met à jour certaines variables (comme celle indiquant le code retour  de  la
  205.   dernière commande exécutée) puis affiche de nouveau la chaine d'invite.
  206.       Vous pouvez demander une exécution en arrière plan, c'est-à-dire que
  207.   AUSH n'attendra pas la fin de la commande. Il vous faudra alors spécifier le
  208.   caractère "&" sur la ligne de commande (par exemple "list >maliste  &").  Le
  209.   shell affichera alors le numéro de processus de cette commande puis l'invite
  210.   ré-apparaitra immédiatement.
  211.       Par défaut, les commandes héritent de la  priorité  du  shell,  mais
  212.   AUSH vous permet de modifier temporairement cette priorité. Ainsi,  si  vous
  213.   tapez une ligne de la forme "cmd @n", la  commande  indiquée  sera  exécutée
  214.   avec la priorité "n" (par exemple "list @-3" lancera la commande "list" avec
  215.   la priorité -3). Ceci ne marchera cependant pas pour les commandes internes.
  216.   De même, lors du lancement en arrière plan,  vous  pouvez  faire  suivre  le
  217.   caractère "&" par la priorité à donner à la  commande.  Par  exemple,  "list
  218.   >maliste &5" lancera la commande "list" en arrière plan, avec la priorité 5.
  219.       Notez que les spécifications    "&"  et  "@"  peuvent  être  indiquées
  220.   n'importe où sur la ligne de commande.
  221.  
  222. Les variables
  223.  
  224.       AUSH vous permet de définir des variables, comme dans un langage  de
  225.   programmation classique. Les caractères autorisés pour les noms de variables
  226.   sont les lettres minuscules et majuscules, les  chiffres,  et  le  caractère
  227.   souligné.  Notez   que   minuscules    et   majuscules   sont     différenciées
  228.   (contrairement  aux  noms  de  fichiers).  Ces  variables  peuvent  contenir
  229.   n'importe quelle valeur, aussi bien numérique que alphanumérique.
  230.       Les  variables  globales  sont  accessibles  à  tous     les   niveaux
  231.   d'exécution, c'est-à-dire  aussi  bien  en  mode  interactif  que  dans  les
  232.   fichiers de commandes. Elles ne  peuvent  être  détruites.  Notez  qu'il  ne
  233.   s'agit pas des variables au sens des variables d'environnement de Commodore.
  234.   Elles ne sont pas partagées par plusieurs shells.
  235.       Une variables locale n'est accessible que dans le niveau d'exécution
  236.   où elle a été définie pour la  première  fois.  Lors    du  retour  au    niveau
  237.   précédent, les variables locales sont détruites automatiquement.
  238.       Certaines variables permettent de contrôler et de  paramètrer  AUSH.
  239.   Ces variables sont décrites plus loin.
  240.  
  241. Expressions
  242.  
  243.       AUSH peut évaluer des expressions entières,  exprimées  en  notation
  244.   polonaise inversée postfixée. Vous pouvez utiliser des variables locales  ou
  245.   globales dans ces expressions, si leurs  valeurs  sont  numériques.  Il  est
  246.   possible d'indiquer des nombres hexadécimaux (précédés par "0x", par exemple
  247.   "0x13e"). Par défaut le résultat est en  décimal.  Les  opérateurs  reconnus
  248.   sont :
  249.  
  250.       +      addition
  251.       -      soustraction
  252.       *      multiplication
  253.       /      division
  254.       %      modulo (reste de la division entière)
  255.       <      décalage à gauche
  256.       >      décalage à droite
  257.       &      et
  258.       |      ou
  259.       sx      dépile le sommet de pile dans le registre x
  260.       lx      empile le contenu du registre x
  261.       HEX      affiche le résultat en hexadécimal
  262.  
  263.       Il y a dix registres (désignés par un chiffre de 0 à 9)  initialisés
  264.   à zéro au  démarrage    du  shell.  Ils  conservent  leur  valeur  entre  deux
  265.   évaluations d'expression. Les nombres et les opérateurs doivent être séparés
  266.   par au moins un espace, sauf le - unaire (négation).
  267.  
  268.   Exemples :
  269.  
  270.       echo { 34 3 / 4 + } => 15
  271.       echo { 7 3 - }      => 4
  272.       echo { 10 -2 + }    => 8
  273.  
  274.       set cpt 3
  275.       echo { $cpt 2 * }   => 6
  276.       set cpt { $cpt 1 + }
  277.       echo $cpt          => 4
  278.  
  279. Les fichiers de commandes
  280.  
  281.       Vous pouvez regrouper plusieurs commandes dans  un  fichier,    et  le
  282.   faire exécuter par AUSH comme un programme quelconque. Tout ce passera alors
  283.   comme si vous aviez tapé cette suite de commandes au clavier, à part sur  le
  284.   plan des variables locales.
  285.       Dans un fichier de commandes, la variable locale "argc"  indique  le
  286.   nombre d'arguments reçus. AUSH  positionne  également  des  pseudo-variables
  287.   locales (elles n'apparaissent pas dans la liste des variables données par la
  288.   commande "set", et ne peuvent être modifiées) : la variable "0" contient  le
  289.   nom du fichier de commandes,    les  variables    "1",  "2",...  les  différents
  290.   arguments, et la variable "*" la liste des  arguments  (à  partir  de  "$1")
  291.   séparés par un espace.
  292.       Chaque  fois    que  vous  lancez  AUSH,  le  fichier    de   commandes
  293.   "S:.aushrc" est exécuté (s'il existe). L'argument optionnel  "FROM  fichier"
  294.   permet d'exécuter le fichier de commandes  indiqué  plutôt  que  le  fichier
  295.   "S:.aushrc".
  296.  
  297. Gestion de l'historique
  298.  
  299.       AUSH peut mémoriser vos commandes, et vous permettre de les rappeler
  300.   par la suite. Le  mécanisme  d'historique,  qui  ne  fonctionne  qu'en  mode
  301.   interactif, est contrôlé par la variable "history" (qui indique le nombre de
  302.   commandes à conserver). La  commande    "history"  (décrite  plus  loin)  vous
  303.   permet de voir le contenu de l'historique.
  304.  
  305.       La variable "savehist" indique le nombre de commandes sauvées  entre
  306.   chaque exécution d'un shell. Ce fichier (généré lors de  la  terminaison  du
  307.   shell) est automatiquement chargé lors du démarrage, et les commandes  qu'il
  308.   contient sont copiées dans l'historique. La variable  "histfile"  peut  être
  309.   définie, pour indiquer le nom  du  fichier  de  sauvegarde.  Par  défaut  ce
  310.   fichier est "S:.history".
  311.  
  312. Edition de la ligne de commandes
  313.  
  314.       Ce mécanisme permet de se passer du gestionnaire de console  NewCON.
  315.   Il est activé en affectant la valeur "1"  à  la  variable  "lineedit".  Vous
  316.   pouvez alors utiliser les  touches  suivantes  pour  éditer  vos  lignes  de
  317.   commande :
  318.  
  319.     gauche         caractère précédent.
  320.     droite         caractère suivant.
  321.     shift-gauche mot précédent.
  322.     shift-droit  mot suivant.
  323.     shift-haut   dernière commande commençant par la ligne courante.
  324.     haut         commande précédente dans l'historique.
  325.     bas         commande suivante dans l'historique.
  326.     ^A         va en début de ligne.
  327.     ^B         caractère précédent.
  328.     ^E         va en fin de ligne.
  329.     ^F         caractère suivant.
  330.     ^K         efface la fin de ligne.
  331.     ^L         ré-affiche la ligne.
  332.     ^N         commande suivante dans l'historique.
  333.     ^P         commande précédente dans l'historique.
  334.     ^S         échange les deux caractères précédents.
  335.     ^T         première commande dans l'historique.
  336.     ^W         efface la fin du mot.
  337.     ^X         efface la ligne.
  338.     ^Z         dernière commande dans l'historique.
  339.     RETURN         exécute la commande, après sauvegarde dans l'historique.
  340.     ESC         annule la commande, après sauvegarde dans l'historique.
  341.  
  342.     ^V         le mot précédent est considéré comme un nom de variable
  343.              et est remplacé par la valeur de cette variable.
  344.              Exemple : echo version<^V> => echo 1.10.
  345.     TAB         complète le nom de fichier ou de variable.
  346.              Exemple :     cd ram:
  347.                  list Cl<TAB>  => list ClipBoards/
  348.                  echo $hi<TAB> => echo $history
  349.              S'il y a plusieurs possibilités, AUSH complète le plus
  350.              loin possible et affiche la liste des possibilités.
  351.              Pour compléter un nom de fichier, AUSH lui ajoute le
  352.              contenu de la variable "filepat" et étend le motif
  353.              ainsi obtenue.
  354.     ^D         affiche la liste des possibilités pour compléter le
  355.              nom de fichier ou de variable (sans modifier la ligne
  356.              de commande).
  357.  
  358.     HELP         appelle la requête de fichier. Si vous choisissez un
  359.              fichier, son nom sera ajouté dans la ligne de commande.
  360.  
  361.     f1 à f10     remplacé par la valeur des variables "f1" à "f10", ou
  362.              "F1" à "F10" si shifté.
  363.  
  364.   Les commandes TAB et ^D peuvent être utilisées au milieu  d'un  mot.  Toutes
  365.   les touches de contrôle peuvent être redéfinies, à  l'aide  de  la  variable
  366.   spéciale "keys" (voir plus loin).
  367.  
  368. Gestion des répertoires
  369.  
  370.       Si vous définissez l'alias "dircmd", cet alias sera  exécuté  chaque
  371.   fois que vous taperez un nom de  répertoire  comme  nom  de  commande  (sans
  372.   argument, redirection, pipe, ni  lancement  en  arrière-plan).  Par  exemple
  373.   "alias dircmd cd %1" vous permet d'avoir un "cd" implicite :  taper  le  nom
  374.   d'un répertoire suffit pour y aller. Vous pouvez également définir un  alias
  375.   plus complexe, comme "alias dircmd cd %1 , list FILES QUICK".
  376.  
  377.       AUSH peut gérer une pile de répertoire (64  entrées).  L'ajout  d'un
  378.   répertoire ce fait à l'aide la commande  interne  "pushd",  le  retrait  par
  379.   "popd", et l'affichage du contenu de la pile par "dirs" (ces commandes  sont
  380.   décrites plus loin).
  381.       Vous pouvez utiliser cette pile dans vos  commandes  avec  la  forme
  382.   "§n", où "n" est le numéro d'un répertoire dans  la  pile  (indiqué  par  la
  383.   commande "dirs").
  384.  
  385. Commandes internes
  386.  
  387.       Ce chapitre décrit  toutes  les  commandes  internes    de  AUSH.  Ces
  388.   commandes ne peuvent    être  lancées  en  arrière  plan  mais    acceptent  les
  389.   redirections en entrée et en sortie. Elles retournent 0  (RETURN_OK)  ou  20
  390.   (RETURN_FAIL) suivant le cas.
  391.       Lors de l'affichage de la valeur d'une variable  par  les  commandes
  392.   "setvar" ou "set", les attributs  de  cette  variable  sont  affichés  entre
  393.   parenthèses ("x" pour exportable, "r" pour lecture seulement).
  394.  
  395.   alias
  396.       Affiche la liste des alias et leurs définitions.
  397.  
  398.   alias nom
  399.       Affiche la définition de l'alias indiqué.
  400.  
  401.   alias nom chaine
  402.       Défini un alias "nom" de valeur "chaine". Dans la chaine, le symbole
  403.       "[]" indique où placer les arguments  lors  de  la  substitution  de
  404.       l'alias. Il est possible de désigner les arguments un par  un,  avec
  405.       les spécifications "%1", "%2", ..."%9".
  406.  
  407.   cd [rep]
  408.       Sans argument affiche le nom  du    répertoire  courant,  sinon  "rep"
  409.       devient le répertoire courant.
  410.  
  411.   dirs
  412.       Affiche le contenu de la pile des répertoires.
  413.  
  414.   echo [-c] [args...]
  415.       Affiche les arguments sur la sortie  standard,  suivis  d'un  retour
  416.       chariot sauf si vous indiquez l'option "-c".
  417.  
  418.   eval
  419.       Passe en mode évaluation : toute ligne en entrée est analysée  comme
  420.       une expression (voir syntaxe plus haut) et le résultat affiché. Pour
  421.       sortir de ce mode, tapez "x" tout seul sur une ligne.
  422.  
  423.   exit [code]
  424.       Retourne au  niveau  d'exécution  précédent,  avec  le  code  retour
  425.       indiqué (0 par défaut). En mode interactif, termine le shell.
  426.  
  427.   export vars...
  428.       Marque les variables  locales  indiquées    comme  "exportables".  Ces
  429.       variables deviennent alors  lisibles,  modifiables  et  détruisibles
  430.       dans les fichiers de commandes lancés depuis le  niveau  d'exécution
  431.       courant.
  432.  
  433.   for var in val1 val2... valn
  434.   ...
  435.   done
  436.       Effectue une boucle. La variable "var" (locale)  prend  les  valeurs
  437.       indiquées  dans  la  liste,  et  pour  chaque  valeur  la   séquence
  438.       d'instruction entre le "for" et le "done"  est  exécutée  une  fois.
  439.       Après le "done",  la  variable  contient  la  dernière  valeur  pour
  440.       laquelle la boucle a été effectuée.  En  mode  interactif,  l'invite
  441.       devient celle indiquée par la variable "prompt3", entre le "for"  et
  442.       le "done".
  443.       Vous pouvez également utiliser la forme "for var in val1  ..  val2",
  444.       qui effectue la boucle pour chaque valeur comprise entre les nombres
  445.       "val1" et "val2" inclus. Si le nombre "val2" est inférieur au nombre
  446.       "val1", la boucle est effectué avec un pas de -1. Les nombres "val1"
  447.       et "val2" peuvent être négatifs.
  448.       La fonction "split" peut être très utile ici : si la variable "toto"
  449.       contient "ceci est un exemple", la commande "for i in $toto" ne fera
  450.       qu'une seule boucle, avec "i" valant  "ceci  est  un  exemple".  Par
  451.       contre, la commande "for i in $toto:split" fera bien quatre boucles,
  452.       avec "i" valant successivement "ceci", "est", "un" et "exemple".
  453.  
  454.   for var from file
  455.   ...
  456.   done
  457.       Effectue une boucle de la même façon que pour la    forme  précédente,
  458.       sauf que la variable "var" (locale) prend successivement pour valeur
  459.       chaque ligne du fichier indiqué.
  460.  
  461.   history [str]
  462.       Donne la liste des commandes présentes dans  l'historique.  Si  vous
  463.       indiquez un argument "str", l'affichage sera  limité  aux  commandes
  464.       commençant par la chaine de caractères"str".
  465.  
  466.   if [NOT] condition
  467.   ....
  468.   [else
  469.   ....]
  470.   endif
  471.       Exécution conditionnelle. En mode "interactif", la  chaine  d'invite
  472.       devient celle indiquée par la variable "prompt2".
  473.       La condition peut être :
  474.  
  475.       -d nom      vrai si "nom" est un répertoire (1)
  476.       -e nom      vrai si "nom" existe (1)
  477.       -f nom      vrai si "nom" est un fichier (1)
  478.       -o nom nom2 vrai si "nom1" et "nom2" existent et que
  479.               "nom" est plus ancien que "nom2" (1)
  480.       -s nom      vrai si "nom" est un fichier non vide (1)
  481.       str = str   vrai si les deux chaines sont identiques
  482.       str == str  vrai si les deux chaines sont identiques
  483.               (sans différencier majuscules et minuscules)
  484.       n1 LT n2    vrai si n1 est inférieur n2
  485.       n1 EQ n2    vrai si n1 est égal à n2
  486.       n1 GT n2    vrai si n1 est supérieur n2
  487.       n1 LE n2    vrai si n1 est inférieur ou égal à n2
  488.       n1 NE n2    vrai si n1 est différent de n2
  489.       n1 GE n2    vrai si n1 est supérieur ou égal à n2
  490.  
  491.       Le  mot-clé  "NOT"  avant  une  condition  permet  d'inverser  cette
  492.       condition. Jusqu'à 16 commandes "if" peuvent être imbriquées.
  493.  
  494.       (1) Si la lettre après le tiret est en majuscule (exemple: "-D"), le
  495.       test échouera sans requêtes  de  l'AmigaDOS  en  cas  de  volume
  496.       absent, lecteur de disquette vide, etc...
  497.  
  498.   jobs
  499.       Affiche la liste des processus lancés en arrière plan.
  500.  
  501.   loadhist
  502.       Force le chargement immédiat du fichier contenant  l'historique  des
  503.       commandes. Cette commande peut être utile si vous changez la  valeur
  504.       de la variable "histfile" et que vous voulez prendre  en  compte  le
  505.       nouveau fichier.
  506.  
  507.   popd [nb]
  508.       Sans arguments dépile le dernier répertoire empilé  et  en  fait    le
  509.       répertoire courant, sinon tronque la pile des répertoires  aux  "nb"
  510.       premiers répertoires ("popd 0" vide complètement la pile).
  511.  
  512.   pushd rep
  513.       Empile le répertoire courant,  puis  fait  de  "rep"  le  répertoire
  514.       courant.
  515.  
  516.   read [-f] var
  517.       Affecte à la variable locale indiquée une  ligne    lue  sur  l'entrée
  518.       standard. Retourne RETURN_FAIL en cas de fin de fichier. L'option -f
  519.       permet d'interdire la saisie d'une chaine vide.
  520.  
  521.   readonly vars...
  522.       Empêche toute modification ou destruction des variables (locales  ou
  523.       globales) indiquées. Cette opération est irréversible.
  524.  
  525.   set
  526.       Affiche la liste des variables locales, ainsi que leur valeurs.
  527.  
  528.   set var
  529.       Affiche la valeur de la variable locale "var".
  530.  
  531.   set var val
  532.       Affecte la valeur "val" à la variable locale "var". La variable  est
  533.       créée si elle n'existe pas encore.
  534.  
  535.   setvar
  536.       Affiche la liste des variables globales, ainsi que leur valeurs.
  537.  
  538.   setvar var
  539.       Affiche la valeur de la variable globale "var".
  540.  
  541.   setvar var val
  542.       Affecte la valeur "val" à la variable globale "var". La variable est
  543.       créée si elle n'existe pas encore.
  544.  
  545.   shift
  546.       Décale les arguments d'un fichier de commandes : la  pseudo-variable
  547.       "1" reçoit le contenu de "2", puis la pseudo-variable "2"  celui  de
  548.       "3", etc... La variable "argc" et la pseudo-variable "*" sont  mises
  549.       à jour.
  550.  
  551.   source fichier
  552.       Exécute le fichier de commandes indiqué. Si vous redirigez la sortie
  553.       de cette commande, la redirection concernera toutes les commandes du
  554.       fichier.
  555.  
  556.   stop [code]
  557.       Interrompt l'exécution de la boucle "for...done" courante,  avec  le
  558.       code retour indiqué (0 par défaut).
  559.  
  560.   time <commande>
  561.       Lance l'exécution de la commande indiquée, puis affiche la durée (en
  562.       secondes) d'exécution de cette  commande.  Peut  être  utilisé  pour
  563.       toutes les commandes,  y    compris  les  commandes  internes  et  les
  564.       commandes lancées en arrière plan.
  565.  
  566.   unalias noms...
  567.       Détruit les alias indiqués.
  568.  
  569.   unset vars...
  570.       Détruit les variables locales indiquées.
  571.  
  572.   window front
  573.   window back
  574.   window move x y
  575.   window size largeur hauteur
  576.       Place la fenêtre    au  premier  plan,  au    dernier  plan,    change    sa
  577.       position ou sa taille.
  578.  
  579.   writehist
  580.       Force une sauvegarde immédiate de l'historique. Cette commande  peut
  581.       être utilisée par exemple avant de lancer un programme qui risque de
  582.       "planter" votre Amiga.
  583.  
  584. Variables spéciales
  585.  
  586.       Les variables suivantes permettent de  contrôler  et    de  paramétrer
  587.   AUSH. Sauf dans le cas où une valeur initiale est indiquée,  elles  ne  sont
  588.   pas définies au démarrage. Il est recommandé de les définir comme  variables
  589.   globales (c'est d'ailleurs ce que fait AUSH pour celles qui ont  une  valeur
  590.   initiale) ou éventuellement comme variables d'environnement de Commodore.
  591.  
  592.   cmdnum      numéro de commande, de la forme "_ShellNumber_CmdNumber"
  593.           (garanti différent pour chaque commande exécutée).
  594.   cwd          nom du répertoire courant.
  595.   debug       si vaut "1", trace les commandes exécutées (avant  et  après
  596.           première interprétation, utile pour la  mise  au    point  des
  597.           fichiers de commandes).
  598.   delim       caractères délimiteurs  de  mots    pour  les  fonctions  "mot
  599.           suivant", "mot précédent" et  "efface  la  fin  du  mot"  de
  600.           l'éditeur de la ligne de commande.
  601.           Valeur initiale : " :/".
  602.   filepat     chaine ajoutée au mot en cours pour  compléter  les  nom    de
  603.           fichiers.
  604.           Valeur initiale : "#?".
  605.   fullhist     si  vaut  "1",  sauvegarde  toutes   les   commandes   dans
  606.           l'historique, sinon ne sauvegarde pas deux fois de suite  la
  607.           même commande.
  608.   histfile    nom du fichier de  sauvegarde  de  l'historique  entre  deux
  609.           sessions. Si cette variable n'est pas définie,  l'historique
  610.           est sauvegardé dans "S:.history".
  611.   histmin     longueur minimale que doit  avoir  une  commande    pour  être
  612.           conservée dans l'historique.
  613.           Valeur initiale : 3.
  614.   history     nombre de commandes conservées  dans  l'historique  (si  non
  615.           défini ou inférieur à 1,    seule  la  dernière  commande  est
  616.           sauvée).
  617.           Valeur initiale : 50.
  618.   insert      si vaut "1", l'édition de la ligne de commande  se  fait  en
  619.           mode "insertion" (mode "remplacement" sinon).
  620.           Valeur initiale : 1.
  621.   ioerror     code d'erreur positionné  par  la  dernière  commande  ayant
  622.           échoué (pour l'instant ne  marche  que  pour  les  commandes
  623.           internes).
  624.           Valeur initiale : 0.
  625.   keys          indique comment gérer les touches de contrôle sous l'éditeur
  626.           de lignes de commande. La valeur de cette variable doit être
  627.           une chaine de lettres minuscules, chaque lettre indiquant la
  628.           touche de contrôle appelant une des fonctions de    l'éditeur.
  629.           C'est la position de la lettre dans la chaine qui  détermine
  630.           la fonction appelée :
  631.  
  632.           position 1      va en début de ligne
  633.           position 2      caractère précédent
  634.           position 3      liste des compléments
  635.           position 4      va en fin de ligne
  636.           position 5      caractère suivant
  637.           position 6      efface fin de ligne
  638.           position 7      re-affiche la ligne
  639.           position 8      ligne suivante
  640.           position 9      ligne précédente
  641.           position 10      échange deux caractères
  642.           position 11      va au début de l'historique
  643.           position 12      remplace variable
  644.           position 13      efface fin de mot
  645.           position 14      efface ligne
  646.           position 15      va à la fin de l'historique
  647.  
  648.           Par exemple, si la quatrième lettre est un "o", l'appui  sur
  649.           la touche ^o déplacera le curseur en fin de ligne.  Dans    la
  650.           redéfinition  des  touches  à  utiliser,    veuillez  ne   pas
  651.           spécifier les touches de contrôle ^h, ^i, ^j, et ^m, car ces
  652.           touches sont gérées spécialement.
  653.           Valeur initiale : "abdefklnpstvwxz".
  654.   lineedit    si vaut "1", active l'édition de la ligne de  commande.  Est
  655.           ignorée si la variable "remove" vaut "1".
  656.   noexpand    si vaut "1", désactive l'extension des méta-caractères.
  657.   path          indique le chemin de recherche  des  commandes  à  exécuter,
  658.           sous la forme d'une liste de noms de répertoires séparés par
  659.           un caractère  ";".  Pour  désigner  le  répertoire  courant,
  660.           indiquez "." comme nom de répertoire. Si un fichier avec  le
  661.           bit "s" est trouvé, AUSH tentera de déterminer son  type  et
  662.           lancera automatiquement la commande associée :
  663.  
  664.           rx      si le fichier commence par "/*" (script AREXX)
  665.           source  si le fichier commence par ";AUSH" (script AUSH)
  666.           execute dans tous les autres cas
  667.  
  668.           Exemple : setvar path 'ram:;.;c:;sys:utilities'
  669.   prompt      chaine d'invite, interprétée comme suit :
  670.  
  671.           %h      numéro dans l'historique
  672.           %#      numéro du shell
  673.           %i      niveau d'imbrication des "if"
  674.           %l      niveau d'imbrication de boucle
  675.           %c      nom du répertoire courant (variable "cwd")
  676.           %b      nom de base du répertoire courant
  677.           %s      dernier code retour (variable "status")
  678.           %Vnom   valeur de la variable "nom".
  679.           %T      heure (HH:MM:SS)
  680.           %d      jour du mois (1-31)
  681.           %D      jour de la semaine (Lun-Dim)
  682.           %m      mois (1-12)
  683.           %M      nom du mois (Jan-Dec)
  684.           %y      année (1900-1999)
  685.           %C      caractère CSI (0x9B)
  686.           %N      caractère retour chariot
  687.           %f      taille de mémoire FAST libre
  688.           %v      taille de mémoire CHIP libre
  689.           %a      taille de mémoire libre (CHIP+FAST)
  690.           %%      signe %
  691.  
  692.           Valeur initiale : "%C0;33;40m< %# - %c >%C0;31;40m ".
  693.   prompt2     idem que "prompt", mais utilisé entre "if" et "endif".
  694.           Valeur initiale : "%i> ".
  695.   prompt3     idem que "prompt", mais utilisé entre "for" et "done".
  696.           Valeur initiale : "%l) ".
  697.  
  698.   NOTE : en l'absence de définition, "> " est utilisé comme invite.
  699.  
  700.   remote      vaut "1" pour un shell utilisant "AUX:" comme terminal.
  701.   savehist    nombre de commandes sauvées entre  chaque  session  (si  non
  702.           défini ou inférieur à 1 rien n'est sauvé).
  703.   status      code retour de la dernière commande exécutée.
  704.   titlebar    idem que "prompt", mais pour le titre de la  fenêtre  shell.
  705.           Est ignorée si la variable "remote" vaut "1".
  706.   trap          commande(s) à exécuter lors de l'interruption  d'un  fichier
  707.           de commandes ou d'une boucle "for...done"  par  l'appui  sur
  708.           CTRL-C  ou  CTRL-D.  Contrairement  aux    autres     variables
  709.           spéciales,  il  est  conseillé  de  définir  cette  variable
  710.           localement (commande  "set",  permet  à  chaque  fichier  de
  711.           commandes de la modifier en fonction de ses besoins). Il est
  712.           également conseillé d'indiquer  une  commande  "exit"  comme
  713.           dernière commande (exemple : set  trap  'delete  $tmpfile  ,
  714.           exit 20'), sinon l'exécution reprendra au point où  elle  en
  715.           était (pour ignorer les interruptions : set  trap  ';').  Si
  716.           cette variable n'est pas définie,  l'exécution  est  arrêtée
  717.           avec un code retour de 20.
  718.   truepipes   utilise "PIPE:" pour gérer les tubes si cette variable  vaut
  719.           "1"
  720.   version     numéro de version de AUSH.
  721.  
  722. Notes
  723.  
  724.       Sauf si vous lui affectez une pile de plus de 4000 octets  AVANT  de
  725.   le lancer, AUSH ne pourra exécuter  plus  d'une  quinzaine  de  fichiers  de
  726.   commandes et/ou de boucles imbriquées (vous obtiendrez le message "pas assez
  727.   de place dans la pile !").
  728.       Si le nom indiqué pour les redirections en sortie  est  "TTY"  (i.e.
  729.   ">TTY" ou ">>TTY"), la redirection se fait vers la fenêtre  du  shell.  Cela
  730.   peut être utile dans un fichier de commandes, pour afficher un message alors
  731.   que la sortie de toutes les commandes a été redirigée vers un fichier.
  732.       Par défauts, les pipes sont gérés à l'aide de  fichiers  temporaires
  733.   créés dans le répertoire "T:" (voir  variable  "truepipes").  Le  répertoire
  734.   "T:" est également utilisé pour stocker des fichiers  temporaires  lors  des
  735.   substitutions de commandes et de l'exécution des boucles "for...done".
  736.       La forme "cmd &" correspond  à  la  forme  "run  cmd"  du  shell  de
  737.   Commodore. Notez que AUSH attend la fin de toutes les commandes  lancées  en
  738.   arrière plan avant de terminer. La commande "jobs" vous permettra de  savoir
  739.   quelles sont ces commandes.
  740.       AUSH n'est pas capable de récupérer le code  retour  d'une  commande
  741.   lancée en arrière plan.
  742.  
  743. Version UNIX
  744.  
  745.       AUSH comprend la  forme  "variable=valeur".  Les  formes  "@pri"  et
  746.   "&pri" sont ignorées, car nice() ne permet pas d'augmenter la  priorité.  La
  747.   commande "cd" sans arguments permet de revenir dans $HOME (comme  d'habitude
  748.   sous UNIX). Les fichiers ".aushrc" et ".history" sont  cherchés  par  défaut
  749.   dans $HOME. Dans l'invite, on ne  peut  avoir  la  memoire  restante  ou  le
  750.   caractère CSI. La variable "truepipes" est ignorée (les tubes  sont  simulés
  751.   par des fichiers dans "/tmp").
  752.       AUSH transforme automatiquement les motifs pour qu'ils correspondent
  753.   au format des expressions régulières utilisées par  "ed",  afin  de  pouvoir
  754.   étendre ces motifs. Il peut donc y  avoir  quelques  conflits  de  temps  en
  755.   temps. Les caractères reconnus pour les motifs sont '*', '?', '[' et ']'.
  756.       L'heure de décès des fils est l'heure à laquelle on détecte  sa  fin
  757.   (normalement pas trop de décalage, puisqu'on déroute le signal SIGCHLD).
  758.       Sous un shell UNIX normal, la commande  "set"  donne  la  liste  des
  759.   variables dans l'environnement courant. Sous AUSH, on obtient la  liste  des
  760.   variables locales. Si  on  veut  le  contenu    de  l'environnement,  il  faut
  761.   utiliser la commande "env".
  762.       L'éditeur de ligne de commandes tient compte du terminal indiqué par
  763.   la variable $TERM. Comme on ne peut pas récuperer les valeurs des touches de
  764.   fonctions shiftées, ainsi que de la touche shift-up,    ces  touches  ne  sont
  765.   utilisables que sur un terminal "amiga". La touche HELP ne fait rien.
  766.  
  767. Historique
  768.  
  769.   v1.00   28-Feb-92, 29564 octets
  770.       o Première version diffusée.
  771.  
  772.   v1.10   28-Mar-92, 31828 octets
  773.       o Cherche les variables également dans les  variables  ARP/Commodore
  774.         et Manx.
  775.       o La touche "^D" affiche les possibilités pour compléter le  nom  de
  776.         fichier ou de variable, les touches "^B", "^F", "^N" et "^P"  font
  777.         la même chose que "gauche", "droite", "bas" et "haut".
  778.       o L'éditeur de ligne de commande efface  le  curseur  pendant  qu'il
  779.         exécute une commande (affichage plus rapide).
  780.       o La requête de fichier récupère le mot en cours pour initialiser le
  781.         répertoire initial de la requête.
  782.       o Remet à zéro les signaux SIGBREAKF en retour de l'éditeur de ligne
  783.         de commandes (car ils sont positionnés si on utilise  ^D,  ^E,  ou
  784.         ^F).
  785.       o Les formes "!!", "!n" et "!chaine" peuvent être indiquée n'importe
  786.         où sur la ligne de commande.
  787.       o Ajout des formes -D, -E, et -F à la commande "if".
  788.       o Ajout de la forme "for var in  val1  ..  val2"  pour  la  commande
  789.         "for...done".
  790.       o Ajout de l'alias "dircmd".
  791.       o Ajoute un espace après une définition d'alias sans  arguments  (si
  792.         on faisait "alias ls dir" puis  "ls  ram:"  on  avait  un  message
  793.         "Please insert volume dirram: in any drive").
  794.       o Messages d'erreur en  allemand  si  la  variable  "language"  vaut
  795.         "deutsch".
  796.       o Commande "setenv" renommée en "setvar" (plus de conflits  avec  la
  797.         commande de Commodore), ajout de la commande "echo".
  798.       o Ajout  des    variables  "version"  et  "path",  variable  "ioerror"
  799.         initialisée à "0", variable "insert" initialisée à  "1",  variable
  800.         "autocd" supprimée.
  801.  
  802.   v1.11   29-Mar-92, 31832 octets
  803.       o La commande "echo" tient compte des redirections en sorties
  804.  
  805.   v1.12   11-Apr-92, 32244 octets
  806.       o Charge l'historique après  l'exécution  de  "S:.aushrc",  afin  de
  807.         prendre en compte une éventuelle modification de la valeur    de  la
  808.         variable "history".
  809.       o Ajout des formes "NE", "LE", et "GE" à la commande "if".
  810.       o La forme "for i in val1 .. val2" accepte des nombres  négatifs  et
  811.         que "val2" soit inférieur à "val1".
  812.       o Plus de contrôle de la taille des  arguments  pour    les  commandes
  813.         internes.
  814.       o Ajout de la fonction "^V" à l'éditeur de ligne de commandes.
  815.  
  816.   v1.13   18-Apr-92, 32280 octets
  817.       o Lors de la recherche d'une commande à l'aide de la variable "path"
  818.         vérifie que  l'objet  trouvé  est  bien  un  fichier  (et  non  un
  819.         répertoire).
  820.  
  821.   v1.14   26-Apr-92, 32300 octets
  822.       o  Deux  erreurs  corrigées  dans  la  substitution  de  commande  :
  823.         n'éliminait pas le "`" final, calcul de la longueur des  arguments
  824.         incorrect.
  825.       o Une erreur corrigée dans le parcoureur : interprétait  quand  même
  826.         les caractères "<>,;" s'ils étaient en première position dans  une
  827.         chaine entre quotes.
  828.       o Messages en allemands revus
  829.  
  830.   v1.15   01-May-92, 32364 octets
  831.       o Ajout de la variable "histfile".
  832.       o Deux erreurs corrigées dans le calcul de la longueur des arguments
  833.         : oubliait de compter les guillements ou les quotes, et de prévoir
  834.         un peu de place supplémentaire pour les arguments "splités".
  835.  
  836.   v1.16   11-May-92, 32404 octets
  837.       o commande "echo" revue : quand on met l'option -c supprime vraiment
  838.         le '\n' final (i.e. ne le remplace pas par un espace)
  839.  
  840.   v1.20   16-May-92, 32568 octets
  841.       o ajout des commandes "loadhist" et "writehist"
  842.       o ajout de la forme "%Vnom" à la syntaxe du l'invite
  843.       o modification du parcoureur :  n'analyse  la  partie  droite  d'une
  844.         commande composée qu'après avoir exécuté la partie gauche, et donc
  845.         :
  846.         - "cd ram: , delete *" donne le résultat attendu ("*" était étendu
  847.         avant de faire le "cd")
  848.         - toutes les commandes simples peuvent être des alias (et non plus
  849.         seulement la première)
  850.         - on peut écrire une boucle sur une seule ligne ("for i in 1 .. 50
  851.         , echo $i , done" ne marchait pas, maintenant même "cd ram: ,  for
  852.         i in *.c , echo $i , compress $i , done , echo fini" fonctionne !)
  853.  
  854.   v1.21   17-May-92, 32912 octets
  855.       o ajout de la commande "time"
  856.  
  857.   v1.22   23-May-92, 32944 octets
  858.       o bug corrigé dans la gestion des boucles  "for...done"  :  lors  de
  859.         l'écriture des commandes dans le fichier  temporaire,  ne  forçait
  860.         pas une fin de ligne après chaque commande
  861.  
  862.   v1.23   01-Jun-92, 33328 octets
  863.       o Plusieurs bugs corrigés dans la gestion des  boucles  "for...done"
  864.         écrites sur une même ligne :  "for  i  in  1  ..  5,echo  $i,done"
  865.         marche, ainsi que "for i in 1 .. 5 , list | wc , done"
  866.       o Si trouve un fichier avec le bit "s"  en  cherchant  une  commande
  867.         dans  le   chemin    défini     par   la   variable   "path",   lance
  868.         automatiquement une commande "source" sur ce fichier.
  869.       o La touche "^S" échange les deux caractères précédant le curseur.
  870.       o Les touches "^D" et "<TAB>" sont utilisables sans préfixe, et donc
  871.         en début de ligne ou après un espace.
  872.       o Bug  corrigé  dans    l'éditeur  de  ligne  de  commande:  après  un
  873.         "shift-haut", les touches "haut" et "bas"  ne  donnaient  pas  les
  874.         bonnes commandes.
  875.  
  876.   v1.30   14-Jun-92, 33932 octets
  877.       o Plusieurs  erreurs    détectées   par   "Enforcer"   et   "Mungwall"
  878.         corrigées.
  879.       o Bug corrigé dans la commande "shift" : ne positionnait pas  "argc"
  880.         correctement.
  881.       o Reconnait "$*" (remplacé par la liste des arguments séparés par un
  882.         espace).
  883.       o Ajout de l'option -f à la commande "read".
  884.       o La variable "argc" est en lecture seulement.
  885.       o Vérifie les  noms  de  variables  donnés  aux  commandes  internes
  886.         (interdit les pseudo-variables arguments).
  887.       o Les spécifications    "&[pri]"  et  "@pri"  peuvent  être  indiquées
  888.         n'importe où sur la ligne de commande.
  889.  
  890.   v1.40   26-Jun-92, 37764 octets
  891.       o Recompilé avec le SAS/C 5.10b (avec pragmas et optimisation)
  892.       o Peut être rendu résident (code "pure")
  893.       o Enorme bug corrigé dans la fonction strxcat() (ne sauvegardait pas
  894.         le registre a2)
  895.       o Nombreuses modifications pour mieux tenir compte de la version  du
  896.         système, ainsi sous système 2.04 :
  897.         - n'a plus besoin de "arp.library"
  898.         - peut exécuter les programmes résidents/internes (ROM)
  899.         - la commande "Execute" peut être utilisée
  900.       o Modification de l'évaluateur d'expressions :
  901.         - on peut indiquer des valeurs en hexa (0x1FD)
  902.         - ajout des opérateurs "HEX", "<", ">", "&", et "|"
  903.       o Ajout de l'option "-o" à la commande "if"
  904.       o Bug corrigé  dans  la  commande  "if":  n'appelait  UnLock()  dans
  905.         certains cas d'erreur
  906.  
  907.   v1.41   30-Jun-92, 37864 octets
  908.       o Correction dans la recherche des commandes:  ne  cherche  plus  le
  909.         chemin si la commande est résidente
  910.  
  911.   v1.42   06-Jul-92, 37872 octets (Fish #706)
  912.       o Bug corrigé dans la gestion des boucles  "for...done":  "oubliait"
  913.         les redirections des commandes dans la boucle
  914.       o Ne    fait  plus  crier  "Enforcer"  quand  on  fait  "!string"  (ou
  915.         "shift-haut" dans l'éditeur de lignes de commandes)  et  qu'aucune
  916.         commande commençant par "string" ne se trouve dans l'historique
  917.  
  918.   v1.50   21-Aug-92, 37736 octets
  919.       o Ajout de la  variable  globale  "keys"  (permet  de  modifier  les
  920.         fonctions des touches de contrôle  sous  l'éditeur  de  lignes  de
  921.         commande)
  922.       o Accepte l'argument "FROM file"
  923.       o Contrôles plus stricts au démarrage: proc->pr_CLI valide,  pas  de
  924.         lancement depuis le WB, etc...
  925.       o Bug  corrigé  dans    l'évaluation  des  expressions:  affichait  le
  926.         résultat en décimal même si on indiquait "HEX"
  927.       o Bug corrigé sous système 1.3: ne donnait pas le chemin complet  de
  928.         la commande à la fonction qui lance l'exécution
  929.  
  930.   v1.51   01-Sep-92, 37804 octets
  931.       o  Bug  corrigé  dans  la  recherche    du  chemin:  après   exécution
  932.         automatique d'un script (bit "s" détecté) les commandes  suivantes
  933.         étaient parfois considérées  elles-aussi  comme  des  scripts  (et
  934.         exécutées comme telles !!!)
  935.       o La commande "history str" n'affiche que les  commandes  commençant
  936.         par "str"
  937.       o  La  commande  "history"  teste  CTRL-C  lors  de  l'affichage  de
  938.         l'historique
  939.       o Affiche la commande retrouvée quand on utilise  les  formes  "!!",
  940.         "!n" ou "!str"
  941.       o Bug corrigé: quand on faisait un "cd  volume:"  la  variable  $cwd
  942.         n'avait pas de ':' à la fin (d'où problème par  exemple  quand  on
  943.         faisait "copy df0:toto $cwd")
  944.       o Bug corrigé dans le complément  de    nom  de  fichier:  distinguait
  945.         minuscules et majuscules
  946.  
  947.   v1.52   22-Sep-92, 40000 octets (Fish #747)
  948.       o La forme ${nom de var} est    acceptée  (permet  par  exemple  "echo
  949.         ${var}coucou")
  950.       o Ajout des fonctions sur les variables (formes  "$var:fonction"  et
  951.         "${var:fonction}")
  952.       o Ajout du test "==" à la commande "if"
  953.       o Sous système 2.0, la longueur des arguments n'est plus limitée
  954.       o Bug corrigé: teste le bit "s"  aussi  quand  on  donne  le  chemin
  955.         complet de la commande
  956.       o Quelques bugs corrigés dans la gestion des boucles "for...done"
  957.       o La variable $cwd se termine maintenant toujours soit par ":"  soit
  958.         par "/"
  959.       o Si aucun fichier ne correspond à  un  motif,  affiche  un  message
  960.         d'erreur et n'exécute pas la commande
  961.  
  962.   v1.53   22-Sep-92, 40136 octets
  963.       o Peut maintenant être utilisé avec "AUX:" comme terminal
  964.       o Ajout de la variable "remote"
  965.       o Les variables "cmdnum", "cwd",  "status",  "version"  et  "remote"
  966.         sont désormais en lecture seulement
  967.       o L'accès à la pile des répertoires se fait avec "§no"  au  lieu  de
  968.         "=no" (plus besoin de protéger le "=" pour la commande "if")
  969.  
  970.   v1.54   05-Oct-92, 40120 octets
  971.       o Plus de blocages de l'éditeur de lignes de commandes
  972.       o Bug corrigé: n'arrivait pas à exécuter une commande sur un  volume
  973.         dont le nom comportait des espaces
  974.       o Bug corrigé: en cas d'erreur de syntaxe sur une des formes !!,  !n
  975.         ou !str, exécutait quand même la commande
  976.  
  977.   v1.55   23-Oct-92, 40764 octets
  978.       o Ajout de la forme "for var from file"
  979.       o Lors du lancement d'une commande en arrière plan, tout  canal  qui
  980.         n'a pas déjà été redirigé est redirigé vers "NIL:"
  981.       o Si la variable "truepipes" vaut "1", utilise  "PIPE:"  pour  gérer
  982.         les tubes (sous système 2.0 uniquement)
  983.       o Ajout des fonctions "base" et "noext"
  984.  
  985.   v2.00   03-Feb-93, 37744 octets
  986.       o Recompilé avec le SAS/C 6.2.
  987.       o Ne fonctionne plus que sous système 2.0 et plus
  988.       o Complètement localisé.
  989.  
  990.   v2.01   07-Mar-93, 37988 octets
  991.       o Se termine si on clique sur le gadget de fermeture de la fenêtre
  992.       o Construction de la chaine d'argument modifiée  (ajoute  un  espace
  993.         avant, et non après)
  994.       o On peut avoir un '%' dans l'invite ou le titre de la  fenêtre,  en
  995.         indiquant '%%'
  996.  
  997.   v2.02   28-Mar-93, 38020 octets
  998.       o Bug corrigé: dans la forme "if str = str", si la  première  chaine
  999.         commençait par un "-", l'interprétait comme une  forme  "if  -test
  1000.         ..." sans aucun contrôle
  1001.  
  1002.   v2.03   13-Apr-93, 38060 octets
  1003.       o Lors du complètement des noms de fichiers, ajoute  automatiquement
  1004.         un '/' si c'est un répertoire ou un ' ' si c'est un fichier
  1005.  
  1006.   v2.04   04-May-93, 38268 octets
  1007.       o Ajout de la fonction "split"
  1008.  
  1009.   v3.00   14-May-93, 39336 octets
  1010.       o Parcoureur entièrement ré-écrit ("$toto:split" en début  de  ligne
  1011.         marche désormais, etc...)
  1012.       o Gestion des alias modifiée :
  1013.         - les définitions NE DOIVENT PLUS être entre quotes simples
  1014.         - les définitions peuvent utiliser %1, %2,... %9 pour indiquer  la
  1015.         position des arguments (la spécification [] est toujours reconnue)
  1016.       o Editeur de lignes de commandes modifié :
  1017.         - plus de problèmes avec les commandes de plus d'une ligne
  1018.         - le complètement de nom de fichiers marche au milieu d'un mot
  1019.         -  les  fonctions  "début  d'historique"  et  "fin   d'historique"
  1020.         marchent correctement
  1021.       o Lors du lancement automatique d'un  script  (bit  "s")  essaye  de
  1022.         deviner son type (AREXX, AUSH ou autre)
  1023.  
  1024.   v3.10   25-May-93, 45964 octets
  1025.       o Se compile et s'exécute sous UNIX
  1026.       o Ajout de la fonction "expand", de la commande "window"
  1027.       o La commande "time" fonctionne à nouveau
  1028.       o Si un code d'erreur ne correspond à aucun des messages prévus dans
  1029.         le catalogue, appelle la fonction Fault() pour avoir le libellé
  1030.       o Erreur corrigée dans les catalogues (TOUS !)
  1031.       o Plusieurs erreurs corrigées ("echo" sans  arguments,  complètement
  1032.         avec curseur en fin de mot, contrôle des noms de variable, etc...)
  1033.  
  1034.   v3.11   01-Jun-93, 46388 octets
  1035.       o Sur Amiga, ne perd plus les caractères tapés à l'avance
  1036.       o "window" sans arguments indique la position et  la  taille  de  la
  1037.         fenêtre
  1038.  
  1039.   v3.12   17-Jun-93, 46396 octets
  1040.       o Erreur corrigée: interprétait ',' et '|' en début de chaine  entre
  1041.         '' ou "" ou en début de contenu de variable
  1042.       o Erreur corrigée: dans un script,  une  ligne  vide    était  traitée
  1043.         comme fin de fichier
  1044.  
  1045.   v3.13   27-Jun-93, 46472 octets
  1046.       o Quelques modifications  pour  faciliter/améliorer  la  compilation
  1047.         sous UNIX
  1048.       o Sous UNIX, l'invite par défaut ne contient plus de séquences  ANSI
  1049.       o Ajout de la spécification "%b" pour la définition de l'invite
  1050.  
  1051.   v3.14   10-Jul-93, 46588 octets
  1052.       o Compilé avec le SAS/C 6.3
  1053.       o L'appel de la requête de fichier causait un "hit" avec Enforcer
  1054.       o Correction d'une erreur dans le parcoureur  (remplacement  de  '*'
  1055.         par '#?' fait plus proprement)
  1056.       o La commande NewAUSH retourne 0 et non 1
  1057.  
  1058.   v3.15   25-Jul-93, 46608 octets
  1059.       o Le nombre maximal d'argument pour les commandes passe  à  128  (au
  1060.         lieu de 64)
  1061.       o Erreur corrigée dans le parcoureur: $i, "toto" et 'titi' n'étaient
  1062.         pas reconnus correctement après un symbole de redirection ('>'  ou
  1063.         '<', par exemple "toto > $i" ne marchait pas).
  1064.       o Erreur corrigée: "cd" ne changait plus cli_SetName sous  AmigaDOS.
  1065.  
  1066.